function getLongestSubString(str) {
  let n = str.length;
  // [left,right] 分别表示这个不重复字串的开始和结束
  let left = 0;
  let right = -1;
  let max = 0;
  let res = {};
  while (left < n) {
    // 取right的右边一个字符
    let nextLetter = str[right + 1];
    // 如果该字符不在之前的子串中 即说明是新字符 存入
    if (!res[nextLetter] && nextLetter != undefined) {
    // right 右移 并将这个字符存入res这个对象中
      right++;
      res[nextLetter] = 1;
    }
    // 如果该字符存在 就将左边界那个字符置为0 同时 左边界右移
    else {
      res[str[left]] = 0;
      left++;
    }
    // 每次计算此时该不重复子串的最长值
    max = Math.max(max, right - left + 1);
  }
  return max;
}
let str = "aacadb";
let max = getLongestSubString(str);
console.log(max);
